package com.sss.day35_mvc_mybatis.controller;

import com.sss.day35_mvc_mybatis.model.UserDemo;
import com.sss.day35_mvc_mybatis.util.R;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.*;

/**
 * 全世界我最爱朴彩英！
 *
 * @Author sss
 * @Create 2023/11/27 10:50
 */
@Controller
public class Demo2JSONController {
    /**
     * @ResponseBody 加上该注解后
     */
    @GetMapping("/json1")
    @ResponseBody  //将返回值响应成json
    public String json1(){
        String str = "{id:1,username:\"admin\"}";
        return str;
    }

    /**
     *场景：页面做查询一个对象时(更新回显)
     * 演示2：将对象响应成json，不再字符串拼接
     * 将对象响应即可
     */
    @GetMapping("/json2")
    @ResponseBody
    public UserDemo json2(){
        UserDemo user = new UserDemo();
        user.setId(1);
        user.setUsername("小明");
        user.setPassword("222");
        user.setBirthday(new Date());
        user.setScore(10.2);

        ArrayList<String> list = new ArrayList<String>();
        list.add("110");
        list.add("112");

        user.setPhoneNum(list);

        return user;
    }


    /**
     * 演示3：将map响应成json
     */
    @GetMapping("/json3")
    @ResponseBody
    public Map<String, Object> json3(){
        HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("id",3);
        map.put("username","张三");
        map.put("password","123");
        map.put("birthday",new Date());

        ArrayList<String> list = new ArrayList<String>();
        list.add("110");
        list.add("112");

        map.put("phoneNumber",list);

        return map;
    }



    /**
     * 演示4：将list响应成json
     */
    @GetMapping("/json4")
    @ResponseBody
    public List<String> json4(){
        ArrayList<String> list = new ArrayList<String>();
        list.add("110");
        list.add("112");

        return list;
    }


    /**
     * 演示5：统一json格式，返回R
     */
    @GetMapping("/json5")
    @ResponseBody
    public R json5(){
        //模拟登陆成功返回一个对象
        R r = new R();
        r.setCode(2000);
        r.setMsg("登陆成功");
        r.setData(new UserDemo());

        return r;
    }
}